nacos的持久化配置可能存在的问题

您所在的位置:网站首页 nacos derby-data目录报错 nacos的持久化配置可能存在的问题

nacos的持久化配置可能存在的问题

2023-06-24 10:33| 来源: 网络整理| 查看: 265

nacos的持久化配置可能存在的问题

文章目录 nacos的持久化配置可能存在的问题一、基础背景二、配置持久化较简单方式——下载遍以后压缩包三、配置持久化坑比较多的方式——Docker3.1、为什么推荐使用环境变量呢?3.2、为什么不直接把conf挂载到本地修改呢

一、基础背景

持久化配置与版本号无关

配置有两种方式

docker

下载编译后压缩包方式

下载源码编译后运行(坑较多,忽略)

二、配置持久化较简单方式——下载遍以后压缩包

在这里插入图片描述

下载之后打开conf目录,修改其中的application.properties文件。

在这里插入图片描述

# db mysql spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://rm-cn-wwo38XXX:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user=root db.password=XXXX

有些文章可能会提到加上这一行:

# 启用 Nacos 持久化功能 nacos.core.persist.enabled=true

实测并不需要。

修改之后打开本地http://localhost:8848/,会发现配置列表已经加载数据库里的信息。

在这里插入图片描述

如上图,全部信息展示完毕,持久化过程完成。

当然,前提是数据库里已经有相应的表信息,建表语句在conf文件夹里面的sql文件可以作为参考。

三、配置持久化坑比较多的方式——Docker

首先是拉取镜像(个人用的是M1芯片的Mac,所以拉取的是第三方nacos)

拉取镜像 docker pull nacos/nacos-server 运行容器 docker run --name nacos-server -e MODE=standalone -p 8848:8848 -d nacos/nacos-server

这个命令会启动一个名为 nacos-server 的容器,并将容器的 8848 端口映射到主机的 8848 端口。在容器启动后,可以通过访问 http://localhost:8848/nacos 来访问 Nacos 控制台。

如果需要在容器启动时指定更多的配置参数,可以将它们添加到 docker run 命令中。例如,以下命令将在容器启动时指定 Nacos 的数据库连接信息:

docker run --name nacos-server -e MODE=standalone -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=mysql-host -e MYSQL_SERVICE_PORT=3306 -e MYSQL_SERVICE_DB_NAME=nacos -e MYSQL_SERVICE_USER=nacos -e MYSQL_SERVICE_PASSWORD=nacos -p 8848:8848 -d nacos/nacos-server

-e之后可以加很多很多环境变量,比如我们在第一部分配置的url等,在这里推荐使用环境变量的方式。

3.1、为什么推荐使用环境变量呢?

我们利用下面的命令进入这个容器

docker exec -it nacos-server /bin/bash

再利用ls,ll等命令展示内部结构,在/home/nacos/conf里面会发现我们在第一部分所配置的文件,如下图。

在这里插入图片描述

可以看到,Files里面有很多文件。

所以我们必须要强调,docker内部和我们直接下载编译好的发行版所显示的内容是大不相同的。

例如在/home/nacos/conf里面我们会发现application.properiies文件:

在这里插入图片描述

在这里插入图片描述

我们会发现,这个文件与我们之前所看见的配置文件是完全不同的,这一点尤为需要注意。

被**${}**包裹的内容就是环境变量。我们也会发现里面有很多的环境变量。

这正是docker所推崇的,也是本人建议采纳的。

3.2、为什么不直接把conf挂载到本地修改呢

有人可能会思考这个问题,利用**-v**命令将文件挂载出去岂不是更方便,利用刚才说的控制环境变量的方式,每当要修改的时候,必须要先关掉容器,再打开一个新容器。

**额,我就是这么想的。。。**所以改了一个一上午的bug。

挂载容易,但千万要记住,不可以只把application.properiies文件在本地的目录上覆盖。因为Docker使用的是**“绑定挂载”(bind mount)**技术,它将本地文件夹与容器中的文件夹直接连接起来,而不是在容器内部创建一个新的文件夹。因此,如果本地文件夹中存在与容器中的文件夹相同路径和名称的文件,则会覆盖容器中的文件。

正如我们刚才所提到的,docker里面的conf目录与我们直接下载的conf目录大不一样。**所以如果要挂载,必须把里面原有的数据都挂载出来。**如果字挂载一个文件,就会报错。

在这里插入图片描述

像这样。这个错误是说从日志中可以看出,Nacos启动失败的原因可能是由于无法找到日志配置文件导致的。个人怀疑是缺少了nacos-logback.XML文件,当然,这只是举个例子,我相信错误肯定不止于此。

以上就是关于nacos持久化的介绍。

改了一上午bug,有点累。。。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3